import shape_of_rauzy_graph as sprg

GDB_list = [
    [],
    ['common'],
    ['1A','1B','2A','2B','2C','2D']
    ]

#GDB_test_list = [['testing_1']]
GDB_test_list = [['testing_4']]
#GDB_test_list = [['testing_3']]
#GDB_test_list = [['testing_2']]

def GDB_1_common(a1=2, a2=3, b=5):
    G = sprg.SimplifiedShapeOfRauzyGraph()

    G.add_edge(1, 2, 0, a1)
    G.add_edge(1, 2, 1, a2)
    G.add_edge(2, 1, 0, b)
    return G

def GDB_2_1A(a=2, b=3, c=5, d=8):
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 1, 0, a)
    G.add_edge(1, 2, 0, b)
    G.add_edge(2, 1, 0, c)
    G.add_edge(2, 2, 0, d)
    return G

def GDB_2_1B(a=2, b=3, c=5, d=8):
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 2, 0, a)
    G.add_edge(1, 2, 1, b)
    G.add_edge(2, 1, 0, c)
    G.add_edge(2, 1, 1, d)
    return G


def GDB_2_2A(a=2, b=3, c=5, d=8, e=10):
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 1, 0, a)
    G.add_edge(1, 2, 0, b)
    G.add_edge(2, 3, 0, c)
    G.add_edge(3, 2, 0, d)
    G.add_edge(3, 1, 0, e)
    return G


def GDB_2_2B(a=2, b=3, c=5, d=8, e=10):
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 1, 0, a)
    G.add_edge(1, 2, 0, b)
    G.add_edge(2, 3, 0, c)
    G.add_edge(2, 3, 1, d)
    G.add_edge(3, 1, 0, e)
    return G


def GDB_2_2C(a=2, b=3, c=5, d=8, e=10):
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 2, 0, a)
    G.add_edge(1, 2, 1, b)
    G.add_edge(2, 3, 0, c)
    G.add_edge(3, 1, 0, d)
    G.add_edge(3, 1, 1, e)
    return G
    
    
def GDB_2_2D(a=2, b=3, c=5, d=8, e=10):
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 2, 0, a)
    G.add_edge(2, 1, 0, b)
    G.add_edge(2, 3, 0, c)
    G.add_edge(3, 1, 0, d)
    G.add_edge(1, 3, 0, e)
    return G    


def GDB_testing_1():
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 2, 0, 1)
    G.add_edge(1, 3, 0, 1)
    G.add_edge(1, 4, 0, 1)
    #G.add_edge(2, 1, 0, 1)
    G.add_edge(2, 3, 0, 1)
    G.add_edge(3, 1, 0, 1)
    G.add_edge(4, 4, 0, 1)
    G.add_edge(4, 2, 0, 1)
    G.add_edge(4, 2, 1, 1)
    G.add_edge(4, 5, 0, 1)
    G.add_edge(5, 4, 0, 1)
    G.add_edge(5, 1, 0, 1)
    return G

def GDB_testing_2():
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 2, 0, 5)
    G.add_edge(1, 1, 0, 6)
    G.add_edge(2, 1, 0, 3)
    G.add_edge(2, 1, 1, 4)    
    return G

def GDB_testing_3():
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 4, 0, 2)
    G.add_edge(1, 4, 1, 3)
    G.add_edge(1, 2, 0, 3)
    G.add_edge(2, 3, 0, 20)
    G.add_edge(2, 3, 1, 30)
    G.add_edge(3, 4, 0, 10)
    G.add_edge(4, 1, 0, 5)    
    return G

def GDB_testing_4():
    G = sprg.SimplifiedShapeOfRauzyGraph()
    G.add_edge(1, 1, 0, 2)
    G.add_edge(1, 1, 1, 3)
    return G
    